import request from "@/utils/request"

/**
 *@params：
 *@desc：
 * 二维码登录
 *@author：羽
 *@date 2022/08/06 16:18:54
 */
// 二维码 key 生成接口
export const scanQrCodesKey = () => {
  return request({
    method: 'get',
    url: '/login/qr/key',
    params: {
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
// 二维码生成接口
export const qrCodesGenerate = (key) => {
  return request({
    method: 'get',
    url: '/login/qr/create',
    params: {
      key,
      timerstamp: new Date().getTime(),//传入参数时间戳
      qrimg: true
    }
  })
}

// 二维码检测扫码状态接口
export const detectionQrCodesGenerate = (key) => {
  return request({
    method: 'get',
    url: '/login/qr/check',
    params: {
      key,
      timerstamp: new Date().getTime(),//传入参数时间戳
      withCredentials: true
    }
  })
}

// /login/status登录状态
export const getLoginStatus = (cookie = '') => {
  return request({
    method: 'post',
    url: '/login/status',
    data: {
      cookie,
      timestamp: new Date(),
      withCredentials: true,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
/**
 *@params：
 *@desc：手机验证码登录
 *@author：羽
 *@date 2022/08/06 16:19:58
 */

// 刷新登录cookie，调用此接口 , 可刷新登录状态,返回内容包含新的cookie(不支持刷新二维码登录的cookie)
export const getLoginRefresh = () => {
  return request({
    method: 'post',
    url: '/login/refresh',
    data: {
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
/**
 *@params：
 *@desc：
 * 发送验证码
 * 说明 : 调用此接口 ,传入手机号码, 可发送验证码
 *
 * 必选参数 : phone: 手机号码
 *
 * 可选参数 : ctcode: 国家区号,默认 86 即中国
 *
 * 接口地址 : /captcha/sent
 *
 * 调用例子 : /captcha/sent?phone=13xxx
 *@author：羽
 *@date 2022/08/06 16:24:29
 */
export const getCaptchaSent = (params) => {
  return request({
    method: 'post',
    url: '/captcha/sent',
    data: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

/**
 *@params：
 *@desc：
 * 验证验证码
 * 说明 : 调用此接口 ,传入手机号码和验证码, 可校验验证码是否正确
 * 必选参数 : phone: 手机号码
 * captcha: 验证码
 * 可选参数 :
 * ctcode: 国家区号,默认 86 即中国
 * 接口地址 : /captcha/verify
 * 调用例子 : /captcha/verify?phone=13xxx&captcha=1597
 *@author：羽
 *@date 2022/08/06 16:26:34
 */

export const getCaptchaVerify = (params) => {
  return request({
    method: 'post',
    url: '/captcha/verify',
    data: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

/**
 *@params：
 *@desc：这是使用的是验证码登录，
 * 手机登录
 * 必选参数 :
 * phone: 手机号码
 *
 * password: 密码
 *
 * 可选参数 :
 * countrycode: 国家码，用于国外手机号登录，例如美国传入：1
 *
 * md5_password: md5 加密后的密码,传入后 password 参数将失效
 *
 * captcha: 验证码,使用 /captcha/sent接口传入手机号获取验证码,调用此接口传入验证码,可使用验证码登录,传入后 password 参数将失效
 *
 * 接口地址 : /login/cellphone
 *
 * 调用例子 : /login/cellphone?phone=xxx&password=yyy /login/cellphone?phone=xxx&md5_password=yyy /login/cellphone?phone=xxx&captcha=1234
 *@author：羽
 *@date 2022/08/06 18:35:26
 */
export const getLoginCellphone = (params) => {
  return request({
    method: 'post',
    url: '/login/cellphone',
    data: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

/**
 *@params：
 *@desc：获取用户详情
 * 说明 : 登录后调用此接口 , 传入用户 id, 可以获取用户详情
 *
 * 必选参数 : uid : 用户 id
 *
 * 接口地址 : /user/detail
 *
 * 调用例子 : /user/detail?uid=32953014
 *@author：羽
 *@date 2022/08/18 09:13:13
 */
// 获取用户详情
export const getUserInfo = (id) => {
  return request({
    method: 'get',
    url: '/user/detail',
    params: {
      uid: id,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

// 获取账号信息
export const getIdCardInfo = (cookie) => {
  return request({
    method: 'get',
    url: '/user/account',
    params: {
      cookie,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
// 获取用户信息 , 歌单，收藏，mv, dj 数量
export const getMusicInfo = (cookie) => {
  return request({
    method: 'get',
    url: '/user/subcount',
    params: {
      cookie,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

// 获取用户等级信息
export const getIdGrade = (cookie) => {
  return request({
    method: 'post',
    url: '/user/level',
    params: {
      cookie,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

// 获取用户绑定信息
export const getIdBindingInfo = (id) => {
  return request({
    method: 'post',
    url: `/user/binding`,
    params: {
      uid: id,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

// 退出
export const logOut = () => {
  return request({
    method: 'post',
    url: `/logout`
  })
}

// 获取vip信息
export const getVipInfo = () => {
  return request({
    method: 'get',
    url: '/vip/info',
    params: {
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
/**
 *@params：
 *@desc：获取用户歌单
 *@author：羽
 *
 * 必选参数 : uid : 用户 id
 *
 * 可选参数 :
 *
 * limit : 返回数量 , 默认为 30
 *
 * offset : 偏移数量，用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0
 *@date 2022/08/05 15:35:27
 */
// { uid, limit offset }
export const getUserPlaylist = (params) => {
  return request({
    method: 'get',
    url: '/user/playlist',
    params: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
/**
 *@params：
 *@desc：添加到我的歌单
 *@author：羽
 * 说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
 *
 * 必选参数 :
 *
 * op: 从歌单增加单曲为 add, 删除为 del
 *
 * pid: 歌单 id tracks: 歌曲 id,可多个,用逗号隔开
 *
 * 接口地址 : /playlist/tracks
 *
 * 调用例子 : /playlist/tracks?op=add&pid=24381616&tracks=347231 ( 对应把歌曲添加到 ' 我 ' 的歌单 , 测试的时候请把这里的 pid 换成你自己的, id 和 tracks 不对可能会报 502 错误)
 *@date 2022/08/05 16:36:06
 */

export const getPlaylistTracks = (params) => {
  return request({
    method: 'get',
    url: '/playlist/tracks',
    params: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}
/**
 *@params：
 *@desc：新建歌单
 * 说明 : 调用此接口 , 传入歌单名字可新建歌单
 *
 * 必选参数 : name : 歌单名
 *
 * 可选参数 :
 *
 * privacy : 是否设置为隐私歌单，默认否，传'10'则设置成隐私歌单
 *
 * type : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单,传 'SHARED'则为共享歌单
 *
 * 接口地址 : /playlist/create
 *
 * 调用例子 : /playlist/create?name=测试歌单,/playlist/create?name=test&type=VIDEO
 *@author：羽
 *@date 2022/08/05 17:15:17
 */

export const getPlaylistCreate = (params) => {
  return request({
    method: 'get',
    url: '/playlist/create',
    params: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

/**
 *@params：
 *@desc：获取客户端歌曲下载 url
 * 说明 : 使用 /song/url 接口获取的是歌曲试听 url, 但存在部分歌曲在非 VIP 账号上可以下载无损音质而不能试听无损音质, 使用此接口可使非 VIP 账号获取这些歌曲的无损音频
 *
 * 必选参数 : id : 音乐 id (仅支持单首歌曲)
 *
 * 可选参数 : br : 码率, 默认设置了 999000 即最大码率, 如果要 320k 则可设置为 320000, 其他类推
 * /song/download/url
 *@author：羽
 *@date 2022/08/10 14:45:02
 */
export const getSongDownloadUrl = (params) => {
  return request({
    method: 'get',
    url: '/song/download/url',
    params: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}

/**
 *@params：
 *@desc：获取用户播放记录
 * 说明 : 登录后调用此接口 , 传入用户 id, 可获取用户播放记录
 *
 * 必选参数 : uid : 用户 id
 *
 * 可选参数 : type : type=1 时只返回 weekData, type=0 时返回 allData
 *
 * 接口地址 : /user/record
 *
 * 调用例子 : /user/record?uid=32953014&type=1
 *@author：羽
 *@date 2022/08/18 15:12:42
 */
// { uid, type : type=1 时只返回 weekData, type=0 时返回 allData }
export const getUserRecord = (params) => {
  return request({
    method: 'get',
    url: '/user/record',
    params: {
      ...params,
      timerstamp: new Date().getTime(),//传入参数时间戳
    }
  })
}


